home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / default_account.inc < prev    next >
Text File  |  2005-03-31  |  2KB  |  105 lines

  1. #
  2. # Default Account
  3. #
  4. # This file implements (or will implement) various ways of determining if
  5. # an account is valid
  6. #
  7. #
  8. # $Id: default_account.inc,v 1.7 2004/07/30 01:03:02 renaud Exp $
  9. #
  10.  
  11.  
  12. #
  13. # Private functions
  14.  
  15. function recv_until(socket, pattern)
  16. {
  17.  local_var r, i, buf;
  18.  i = 0;
  19.  while ( TRUE )
  20.  {
  21.   i ++;
  22.   if ( i > 65535 ) return NULL;
  23.   r = recv(socket:socket, length:1);
  24.   if ( strlen(r) == 0 ) return NULL;
  25.   buf += r;
  26.   if ( egrep(pattern:pattern,string:buf) ) return buf;
  27.  }
  28. }
  29.  
  30.  
  31. function _check_telnet(port, login, password)
  32. {
  33.  local_var soc, res;
  34.  soc = open_sock_tcp(port);
  35.  if(!soc)return(0);
  36.  
  37.  res = telnet_init(soc);
  38.  res += recv_until(socket:soc, pattern:"ogin:");
  39.  if ( ! res ) exit(0);
  40.  
  41.  send(socket:soc, data:login + '\r\n');
  42.  if ( isnull(password) )
  43.   {
  44.    send(socket:soc, data:'id\r\n');
  45.    res = recv_until(socket:soc, pattern:"uid=");
  46.    close(soc);
  47.    if ( res ) return 1; 
  48.    else return 0;
  49.   }
  50.  
  51.  
  52.  res = recv_until(socket:soc, pattern:"word:");
  53.  if ( res == NULL ) 
  54.  {
  55.   close(soc);
  56.   return 0;
  57.  }
  58.  
  59.  send(socket:soc, data:password + '\r\n');
  60.  send(socket:soc, data:'id\r\n');
  61.  
  62.  res = recv_until(socket:soc, pattern:"uid=");
  63.  close(soc);
  64.  if ( res ) return 1;
  65.  else return 0;
  66.  
  67. }
  68.  
  69. #-------------------------------------------------------------------#
  70.  
  71.  
  72. function check_account(login, password)
  73. {
  74.  local_var port, ret;
  75.  
  76.  
  77.  if ( defined_func("bn_random") )
  78.  {
  79.   # Prefer login thru SSH rather than telnet
  80.   port = get_kb_item("Services/ssh");
  81.   if ( ! port ) port = 22; 
  82.   soc = open_sock_tcp(port);
  83.   if ( soc )
  84.   {
  85.   ret = ssh_login(socket:soc, login:account, password:password);
  86.   close(soc);
  87.   if ( ret == 0 ) return port;
  88.   #else return 0; 
  89.   }
  90.  }
  91.  
  92.  port = get_kb_item("Services/telnet");
  93.  if(!port) port = 23;
  94.  
  95.  if(get_port_state(port))
  96.  {
  97.   if ( isnull(password) ) password = "";
  98.   res = _check_telnet(port:port, login:login, password:password);
  99.   if(res)
  100.    return(port);
  101.  }
  102.  return(0);
  103. }
  104.